Система счисления — это способ представления любого числа посредством алфавита символов, называемых цифрами. |
Существуют позиционные и непозиционные системы счисления.
В непозиционных системах счисления вес цифры (т. е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.
В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757.7 первая семерка означает 7 сотен, вторая — 7 единиц, а третья — 7 десятых долей единицы.
Сама же запись числа 757.7 означает сокращенную запись выражения
Любая позиционная система счисления характеризуется своим основанием.
Основание позиционной системы счисления — количество различных цифр, используемых для изображения чисел в данной системе счисления. |
За основание системы можно принять любое натуральное число — два, три, четыре и т.д. Следовательно, возможно бесчисленное множество позиционных систем: двоичная, троичная, четверичная и т.д. Запись чисел в каждой из систем счисления с основанием q означает сокращенную запись выражения
В каждой системе счисления цифры упорядочены в соответствии с их значениями:
1 больше 0, 2 больше 1 и т.д.
Продвижением цифры называют замену её следующей по величине. |
Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры — 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 — замену её на 0.
Целые числа в любой системе счисления порождаются с помощью Правила
счета:
Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё. |
Применяя это правило, запишем первые десять целых чисел
Кроме десятичной широко используются системы с основанием, являющимся целой степенью числа 2, а именно:
|
|
Из всех систем счисления особенно проста и поэтому интересна для технической реализации в компьютерах двоичная система счисления.
Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.
А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:
Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи.
Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.
Числа в этих системах читаются почти так же легко, как десятичные, требуют
соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше
разрядов, чем в двоичной системе (ведь числа 8 и 16 — соответственно, третья и
четвертая степени числа 2).
Чтобы перевести восьмеричное (шестнадцатеричное) число в двоичную систему, нужно заменить каждую цифру восьмеричного (шестнадцатеричного) числа соответствующим трехразрядным (четырехразрядным) двоичным числом. Затем необходимо удалить крайние нули слева, а при наличии точки - и крайние нули справа. |
Например:
Чтобы перевести двоичное число в восьмеричную (шестнадцатеричную) систему счисления нужно двигаясь от точки влево, а затем вправо, разбить двоичное число на группы по три (четыре) разряда, дополняя, при необходимости, нулями крайние левую и правую группы. Затем каждую группу из трех (четырех) разрядов следует заменить соответствующей восьмеричной (шестнадцатеричной) цифрой. |
Например,
Чтобы перевести целое десятичное число в двоичную (восьмеричную, шестнадцатеричную) систему счисления, нужно последовательно делить с остатком ("нацело") это число, а затем получаемые частные на основание новой системы счисления до тех пор, пока частное не станет меньше основания. При переводе запись двоичного числа следует начинать со старшего значащего разряда, а заканчивать записью младшего значащего разряда. |
Пример: Переведем число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
Ответ: 7510 = 1 001 0112 = 1138 = 4B16.
Для перевода правильной дроби из десятичной системы счисления в двоичную (восьмеричную, шестнадцатеричную) нужно умножить исходную дробь и дробные части получающихся произведений на основание, представленное в десятичной системе. Целые части получающихся произведений дают последовательность цифр, которая является представлением дроби в двоичной (восьмеричной, шестнадцатеричной) системе счисления. |
Пример. Переведем число 0,36 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
Для чисел, имеющих как целую, так и дробную части, перевод из десятичной системы счисления в другую осуществляется отдельно для целой и дробной частей по правилам, указанным выше. |
Перевод в десятичную систему числа x, записанного в
q-ичной cистеме счисления (q = 2, 8 или 16) в виде
сводится к вычислению значения
многочлена средствами десятичной арифметики. |
Примеpы:
Рассмотрим только те системы счисления, которые применяются в компьютерах — десятичную, двоичную, восьмеричную и шестнадцатеричную. Для определенности возьмем произвольное десятичное число, например 46, и для него выполним все возможные последовательные переводы из одной системы счисления в другую. Порядок переводов определим в соответствии с рисунком:
На этом рисунке использованы следующие обозначения:
Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.
Таблицы сложения легко составить, используя Правило Счета.
Сложение в двоичной системе | Сложение в восьмеричной системе |
При сложении цифры суммируются по разрядам, и если при этом возникает
избыток, то он переносится влево.
Пример 1. Сложим числа 15 и 6 в различных системах
счисления.
Шестнадцатеричная: F16+616 | Ответ: 15+6 = 2110 =
101012 = 258 = 1516.
Проверка. Преобразуем полученные суммы к десятичному виду: 101012 = 24 + 22 + 20 = 16+4+1=21, 258 = 2 . 81 + 5 . 80 = 16 + 5 = 21, 1516 = 1 . 161 + 5 . 160 = 16+5 = 21. |
Шестнадцатеричная:
F16+716+316
|
Ответ: 5+7+3 = 2510 =
110012 = 318 = 1916.
Проверка: 110012 = 24 + 23 + 20 = 16+8+1=25, 318 = 3 . 81 + 1 . 80 = 24 + 1 = 25, 1916 = 1 . 161 + 9 . 160 = 16+9 = 25. |
Ответ: 141,5 + 59,75 = 201,2510 =
11001001,012 = 311,28 = C9,416
Проверка. Преобразуем полученные суммы к десятичному виду:
11001001,012 = 27 + 26 + 23 +
20 + 2-2 = 201,25
311,28 = 3 .
82 + 1 . 81 + 1 . 80 +
2 . 8-1 = 201,25
C9,416 = 12
. 161 + 9 . 160 + 4
. 16-1 = 201,25
Ответ: 201,2510 - 59,7510 =
141,510 = 10001101,12 = 215,48 =
8D,816.
Проверка. Преобразуем полученные разности к
десятичному виду:
10001101,12 = 27 + 23 +
22 + 20 + 2-1 = 141,5;
215,48 =
2 . 82 + 1 . 81 +
5 . 80 + 4 . 8-1 =
141,5;
8D,816 = 8 . 161 + D
. 160 + 8 . 16-1 = 141,5.
Выполняя умножение многозначных чисел в различных позиционных системах счисления, можно использовать обычный алгоритм перемножения чисел в столбик, но при этом результаты перемножения и сложения однозначных чисел необходимо заимствовать из соответствующих рассматриваемой системе таблиц умножения и сложения.
Умножение в двоичной системе | Умножение в восьмеричной системе |
Ответ: 5 . 6 = 3010 = 111102
= 368.
Проверка. Преобразуем полученные произведения к
десятичному виду:
111102 = 24 + 23 +
22 + 21 = 30;
368 = 3 . 8
1 + 6 . 80 = 30.
Пример 8. Перемножим числа 115 и 51.
Ответ: 115 . 51 = 586510 =
10110111010012 = 133518.
Проверка. Преобразуем
полученные произведения к десятичному виду:
10110111010012 =
212 + 210 + 29 + 27 + 26
+ 25 + 23 + 20 = 5865;
133518 =
1 . 84 + 3 . 83 +
3 . 82 + 5 . 81 +
1 . 80 = 5865.
Ответ: 30 : 6 = 510 = 1012 = 58.
Пример 10. Разделим
число 5865 на число 115.
Восьмеричная: 133518 :1638
Ответ: 5865 : 115 = 5110 = 1100112 =
638.
Проверка. Преобразуем полученные частные к
десятичному виду:
1100112 = 25 + 24 +
21 + 20 = 51; 638 = 6 .
81 + 3 . 80 = 51.
Пример 11. Разделим число 35 на
число 14.
Восьмеричная: 438 : 168
Ответ: 35 : 14 = 2,510 = 10,12 =
2,48.
Проверка. Преобразуем полученные частные к
десятичному виду:
10,12 = 21 + 2 -1 = 2,5;
2,48 = 2 . 80 + 4 .
8-1 = 2,5.
В компьютерной технике применяются три формы записи (кодирования)
целых чисел со знаком: прямой код, обратный код, дополнительный код. |
Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения.
Положительные числа в прямом, обратном и
дополнительном кодах изображаются одинаково - двоичными кодами с
цифрой 0 в знаковом разряде. Например:
Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.
1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды
цифровой части числа — двоичный код его абсолютной величины. Например:
2. Обратный код. Получается инвертированием всех цифр двоичного кода
абсолютной величины числа, включая разряд знака: нули заменяются единицами, а
единицы — нулями. Например:
3. Дополнительный код. Получается образованием обратного кода с
последующим прибавлением единицы к его младшему разряду. Например:
Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа.
В большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.
Сложение обратных кодов. Здесь при сложении чисел А и В имеют место четыре основных и два особых случая:
1. А и В положительные. При суммировании
складываются все разряды, включая разряд знака. Так как знаковые разряды
положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю.
Например:
Получен правильный результат.
2. А положительное, B отрицательное и по абсолютной
величине больше, чем А. Например:
Получен правильный результат в обратном коде. При переводе в прямой код биты
цифровой части результата инвертируются: 1 0000111 = -710.
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:
Компьютер исправляет полученный первоначально неправильный
результат (6 вместо 7) переносом единицы из знакового разряда в младший
разряд суммы.
4. А и В отрицательные. Например:
Полученный первоначально неправильный результат (обратный код числа -1110 вместо обратного кода числа -1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = -1010.
При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства. Ниже приведены два возможных случая переполнения.
5. А и В положительные, сумма А+В больше, либо равна
2n-1, где n — количество разрядов формата чисел (для
однобайтового формата n=8, 2n-1 = 27 = 128). Например:
Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.
6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n-1. Например:
Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.
Сложение дополнительных кодов. Здесь также имеют место рассмотренные выше шесть случаев:
1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода.
2. А положительное, B отрицательное и по абсолютной
величине больше, чем А. Например:
Получен правильный результат в дополнительном коде. При переводе
в прямой код биты цифровой части результата инвертируются и к младшему разряду
прибавляется единица: 1 0000110 + 1 = 1 0000111 = -710.
3. А положительное, B отрицательное и по абсолютной
величине меньше, чем А. Например:
Получен правильный результат. Единицу переноса из знакового разряда
компьютер отбрасывает.
4. А и В отрицательные. Например:
Получен правильный результат в дополнительном коде. Единицу переноса
из знакового разряда компьютер отбрасывает.
Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.
Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:
Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат.
Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.
Для иллюстрации умножим 1100112 на 1011012.
Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.
2.1. Используя Правило Счета,
запишите первые 20 целых чисел в десятичной, двоичной, троичной, пятеричной и
восьмеричной системах счисления.
2.2. Какие целые числа следуют за числами:
a) 12; | f) 18; | k) F16; |
b) 1012; | g) 78; | l) 1F16; |
c) 1112; | h) 378; | m) FF16; |
d) 11112; | i) 1778; | n) 9AF916; |
e) 1010112; | j) 77778; | o) CDEF16 ? |
2.3. Какие целые числа предшествуют числам:
a) 102; | f) 108; | k) 1016; |
b) 10102; | g) 208; | l)2016; |
c) 10002; | h) 1008; | m) 10016; |
d) 100002; | i) 1108; | n) A1016; |
e) 101002; | j) 10008; | o) 100016 ? |
2.4. Какой цифрой заканчивается четное двоичное число? Какой цифрой
заканчивается нечетное двоичное число? Какими цифрами может заканчиваться четное
троичное число?
2.5. Какое наибольшее десятичное число можно записать тремя цифрами:
2.6. В какой системе счисления 21 + 24 = 100?
Решение.
Пусть x — искомое основание системы счисления. Тогда 100x = 1 ·
x2 + 0 · x1 + 0 · x0,
21x = 2 · x1 + 1 · x0,
24x = 2 · x1 + 4 · x0. Таким образом,
x2 = 2x + 2x + 5 или x2 - 4x - 5 = 0. Положительным корнем
этого квадратного уравнения является x = 5.
Ответ. Числа записаны в
пятеричной системе счисления.
2.7. В какой системе счисления справедливо следующее:
2.8. Десятичное число 59 эквивалентно числу 214 в некоторой другой системе счисления. Найдите основание этой системы.
2.9. Переведите числа в десятичную систему, а затем проверьте
результаты, выполнив обратные переводы:
a) 10110112; | f) 5178; | k) 1F16; |
b) 101101112; | g) 10108; | l) ABC16; |
c) 0111000012; | h) 12348; | m) 101016; |
d) 0,10001102; | i) 0,348; | n) 0,А416; |
e) 110100,112; | j) 123,418; | o) 1DE,C816. |
2.10. Переведите числа из десятичной системы в двоичную, восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:
а) 12510; б) 22910; в) 8810; г) 37,2510; д) 206,12510.
2.11. Переведите числа из двоичной системы в восьмеричную и
шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:
a) 1001111110111,01112; | d) 1011110011100,112; |
b) 1110101011,10111012; | e) 10111,11111011112; |
c) 10111001,1011001112; | f) 1100010101,110012. |
2.12. Переведите в двоичную и восьмеричную системы шестнадцатеричные числа:
a) 2СE16;
b) 9F4016; c)
ABCDE16; d)
1010,10116; e) 1ABC,9D16.
2.13. Выпишите целые числа:
2.14. Для десятичных чисел 47 и 79 выполните цепочку переводов из одной системы счисления в другую:
2.15. Составьте таблицы сложения однозначных чисел в троичной и
пятеричной системах счисления.
2.16. Составьте таблицы умножения однозначных чисел в троичной и
пятеричной системах счисления.
2.17. Сложите числа, а затем проверьте результаты, выполнив
соответствующие десятичные сложения:
a) 10111012 и 11101112; | e) 378 и 758; | i) A16 и F16; |
b) 1011,1012 и 101,0112; | f) 1658 и 378; | j) 1916 и C16; |
c) 10112, 112 и 111,12; | g) 7,58 и 14,68; | k) A,B16 и E,F16; |
d) 10112 , 11,12 и 1112; | h) 68, 178 и 78; | l) E16, 916 и F16. |
2.18. В каких системах счисления выполнены следующие сложения? Найдите основания каждой системы:
2.19. Найдите те подстановки десятичных цифр вместо букв, которые делают правильными выписанные результаты (разные цифры замещаются разными буквами):
2.20. Вычтите:
a) 1112 из 101002; | e) 158 из 208; | i) 1А16 из 3116; |
b) 10,112 из 100,12; | f) 478 из 1028; | j) F9E16 из 2А3016; |
c) 111,12 из 100102; | g) 56,78 из 1018; | k) D,116 из B,9216; |
d) 100012 из 1110,112; | h) 16,548 из 30,018; | l) ABC16 из 567816. |
2.21. Перемножьте числа, а затем проверьте результаты, выполнив
соответствующие десятичные умножения:
a) 1011012 и 1012; | e) 378 и 48; |
b) 1111012 и 11,012; | f) 168 и 78; |
c) 1011,112 и 101,12; | g) 7,58 и 1,68; |
d) 1012 и 1111,0012; | h) 6,258 и 7,128. |
2.22. Разделите 100101102 на 10102 и проверьте
результат, умножая делитель на частное.
2.23. Разделите 100110101002 на 11002 и затем
выполните соответствующее десятичное и восьмеричное деление.
2.24. Вычислите значения выражений:
2.25. Расположите следующие числа в порядке возрастания:
2.26. Запишите уменьшающийся ряд чисел +3, +2, ..., -3 в однобайтовом формате:
2.27. Запишите числа в прямом коде (формат 1 байт):
a) 31; b)
-63; c) 65; г) -128.
2.28. Запишите числа в обратном и дополнительном кодах (формат 1 байт):
а) -9; b)
-15; c) -127; d) -128.
2.29. Найдите десятичные представления чисел, записанных в дополнительном коде:
a) 1 1111000; b)
1 0011011; c) 1 1101001;
d) 1 0000000.
2.30. Найдите десятичные представления чисел, записанных в обратном коде:
а) 1 1101000; b)
1 0011111; c) 1
0101011; d) 1 0000000.
2.31. Выполните вычитания чисел путем сложения их обратных (дополнительных) кодов в формате 1 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:
а) 9 - 2; | d) -20 - 10; | g) -120 - 15; |
b) 2 - 9; | e) 50 - 25; | h) -126 - 1; |
c) -5 - 7; | f) 127 - 1; | i) -127 - 1. |